/**
 * 使用表格列伸缩列
 * @param columns
 */
export const useDragCol = (columnsProp) => {
  // self: 用来存储当前更改宽度的Table Cell,避免快速移动鼠标的问题
  let self, tableX, table, headerCell

  // 移除事件
  const setEventNull = () =>
    (headerCell.onmouseup = headerCell.onmousedown = headerCell.onmousemove = null)

  columnsProp.forEach((item) => {
    const customHeaderCell = item?.customHeaderCell?.(columnsProp) ?? {}
    item.customHeaderCell = (columns) => ({
      ...customHeaderCell,
      onmouseenter: () => {
        headerCell = columns.title[0].el.closest('th')
        table ??= headerCell.closest('.ant-table-wrapper')
        tableX ??= table.clientWidth
        // console.log(headerCell, 'columns')
        headerCell.onmousemove = function (event) {
          if (event.offsetX > this.offsetWidth - 10) {
            this.style.cursor = 'col-resize'
          } else {
            this.style.cursor = 'default'
          }
          if (self == undefined) {
            self = this
          }
          if (self.mouseDown != null && self.mouseDown == true) {
            self.style.cursor = 'default'
            if (self.oldWidth + (event.x - self.oldX) > 0) {
              self.width = self.oldWidth + (event.x - self.oldX)
            }
            self.style.width = self.width
            table.style.width = tableX + (event.x - self.oldX) + 'px'
            self.style.cursor = 'col-resize'
          }
        }
        headerCell.onmousedown = function (event) {
          self = this
          if (event.offsetX > self.offsetWidth - 10) {
            self.mouseDown = true
            self.oldX = event.x
            self.oldWidth = self.offsetWidth
          }
        }
        headerCell.onmouseup = setEventNull
        table.onmouseup = function () {
          setEventNull()
          if (self == undefined) {
            self = this
          }
          self.mouseDown = false
          self.style.cursor = 'default'
          tableX = table.clientWidth
        }
      },
      onmouseup: () => setEventNull
    })
  })
}
